package com.gzx.plugin.tjzy.modular.gzxcase.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gzx.plugin.tjzy.modular.gzxcase.bo.GzxCaseDetailQueryBo;
import com.gzx.plugin.tjzy.modular.gzxcase.bo.GzxCaseEditBo;
import com.gzx.plugin.tjzy.modular.gzxcase.bo.GzxCaseQueryBo;
import com.gzx.plugin.tjzy.modular.gzxcase.bo.GzxChangeCaseBo;
import com.gzx.plugin.tjzy.modular.gzxcase.vo.GzxCaseDetailJsonVo;
import com.gzx.plugin.tjzy.modular.gzxcase.vo.GzxCaseDetailVo;
import com.gzx.plugin.tjzy.modular.gzxcase.vo.GzxCaseVo;
import com.gzx.plugin.tjzy.modular.word.mediation.vo.GzxWordMediationVo;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * @author zjt
 * @description
 * @since 2024/12/3 14:14
 */
public interface GzxCaseService {

    /**
     * 案件分页查询
     *
     * @param caseQueryBo
     * @return
     */
    Page<GzxCaseVo> pageList(GzxCaseQueryBo caseQueryBo) throws IllegalAccessException;

    /**
     * 案件导入
     *
     * @param multipartFile
     * @param projectCode
     * @throws IOException
     */
    void importCase(MultipartFile multipartFile, String projectCode);

    /**
     * 上下一案件
     *
     * @param changeCaseBo
     * @return
     */
    GzxCaseVo changeCase(GzxChangeCaseBo changeCaseBo);

    /**
     * 查询案件明细
     *
     * @param caseDetailQueryBo
     * @return
     */
    Page<GzxCaseDetailVo> pageListDetail(GzxCaseDetailQueryBo caseDetailQueryBo);

    /**
     * 查询案件详情JSON
     *
     * @param caseDetailId
     * @return
     */
    List<GzxCaseDetailJsonVo> getCaseDetailJson(Long caseDetailId);

    /**
     * 根据甲方系统主键获取案件详情
     *
     * @param parentBusinessId
     * @return
     */
    GzxCaseVo getCaseByParentBusinessId(String parentBusinessId);

    /**
     * 案件修改
     *
     * @param caseEditBo
     */
    void update(GzxCaseEditBo caseEditBo);

    /**
     * 导出我的案件的联系人数据
     *
     * @param caseQueryBo
     */
    void exportMyCaseLiaison(GzxCaseQueryBo caseQueryBo, HttpServletResponse response);

    /**
     * 获取调解协议数据
     *
     * @param caseId
     * @return
     */
    GzxWordMediationVo getWordMediationData(Long caseId);
}
